The following tutorial provides step-by-step instructions on how to create a simple application that loads and recognizes images and saves the recognized data into the file in the specified output format.
Preliminary Steps
Before completing the tutorial steps, complete the preliminary steps outlined in this section.
ImageGear Binary Files to be Accessible from the Application
The following necessary binaries must be located in the working directory of the application or in the directory being specified by the system path:
- igcore18d.dll - Core ImageGear dll.
- igrec18d.dll - ImageGear recognition component dll.
- iglzw18d.dll - ImageGear LZW component. It is necessary if the files with LZW compression are intended to be used.
Recognition re-distributable package (see Distributing Recognition Engine Files with Your Application)
igcore17d.dll must be linked to the application using igcore17d.lib or any other appropriate way. Other dlls do not need to be linked.
ImageGear Header Files to be Included into the Application Code
The following header files must be included into the code:
C | Copy Code |
---|---|
#include "gear.h" // Include for ImageGear Core #include "i_rec.h" // Include for ImageGear Recognition component |
Note that all other ImageGear header files that are referenced from these two must be accessible.
Creating the Application
- Set the solution name and attach the components. Before working with any ImageGear functionality, you need to set the license solution name and attach all necessary components to the Core. These operations must be performed only once per session.
C Copy Code AT_ERRCOUNT nErrCount; HIGEAR hIGear; HIG_REC_IMAGE hRecImg; AT_INT i; enumIGRecLangEnable lang[IG_REC_LANG_SIZE]; HIG_REC_DOCUMENT hDocument; /* To unlock the toolkit for deployment you must call the IG_lic_solution_name_set, IG_lic_solution_key_set() and possibly the IG_lic_OEM_license_key_set() functions. See Licensing section in ImageGear User Manual for more details. */ // Attach LZW component (if necessary) IG_comm_comp_attach( "LZW" ); // Attach Recognition component nErrCount = IG_comm_comp_attach( "REC" ); if(nErrCount != 0) { return -1; }
- Initialize the Recognition component. Before using the Recognition component it must be initialized:
C Copy Code nErrCount = IG_REC_initialize(); if(nErrCount != 0) { return -1; }
- Load the image file and import its content into the Recognition image. ImageGear Core operates on HIGEAR image handles; Recognition component requires its own image representation, that is, HIG_REC_IMAGE. The following code loads the image file and imports HIGEAR into HIG_REC_IMAGE:
C Copy Code nErrCount = IG_load_file("..\\RecognitionC\\Image.tif", &hIGear ); if(nErrCount != 0) { IG_REC_close(); return -1; } nErrCount = IG_REC_image_import(hIGear, &hRecImg); // HIGEAR can be deleted now IG_image_delete(hIGear); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; }
- Set recognition languages. Recognition languages must be set before processing and pre-processing. Note that spelling and correction are enabled by default. Use IG_REC_spelling_is_enabled_set and IG_REC_correction_is_enabled_set with the FALSE parameter to disable them.
C Copy Code // Disable all languages for(i = 0; i < IG_REC_LANG_SIZE; i ++) { lang[i] = IG_REC_LANG_DISABLED; } // Enable English and French lang[IG_REC_LANG_ENG] = IG_REC_LANG_ENABLED; lang[IG_REC_LANG_FRE] = IG_REC_LANG_ENABLED; // Set English and French recognition languages nErrCount = IG_REC_languages_set(lang); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; }
- Preprocess the image. Preprocessing improves the recognition process. It performs such operations as fax correction, deskewing, and rotation. Preprocessing also creates an internal BW image with the secondary resolution conversion and performs inversion (if necessary) and despeckle operations on it.
C Copy Code // Preprocess the image nErrCount = IG_REC_image_preprocess(hRecImg); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; } // Recognize the image nErrCount = IG_REC_image_recognize(hRecImg); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; }
- Set the output format, code page, and output level. Before saving the recognized data into the file, the output format, code page, and level must be set.
C Copy Code // Set Word2000 output format nErrCount = IG_REC_output_format_set("Converters.Text.Word2000"); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; } // Set Windows ANSI code page nErrCount = IG_REC_output_codepage_set("Windows ANSI"); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return - 1; } // Set True Page output level nErrCount = IG_REC_output_level_set(IG_REC_OL_TRUEPAGE); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return; }
- Save the document. Formatted output in most formats is performed using the document architecture (except in cases that you need simple text or xml output. In this case you can use IG_REC_output_direct_text_write function. Please refer to Saving the Recognized Data Directly in the Text Format).
C Copy Code // Create a document nErrCount = IG_REC_document_create(NULL, &hDocument); if(nErrCount != 0) { IG_REC_image_delete(hRecImg); IG_REC_close(); return; } // Insert a page into the document. // Note that after inserting the page does not require to be deleted. nErrCount = IG_REC_document_page_insert(hDocument, hRecImg, -1); if(nErrCount != 0) { IG_REC_document_close(hDocument); IG_REC_image_delete(hRecImg); IG_REC_close(); return; } // Save a document into the file in Word2000 format (being set above) IG_REC_document_write(hDocument, "Tutorial.DOC"); // Close document IG_REC_document_close(hDocument);
- Close the Recognition component.
C Copy Code IG_REC_close();
See Also
Recognition Component API Reference